package top.infopub.mgr.hr.service;


import java.util.List;

import top.infopub.generic.GenericService;
import top.infopub.mgr.hr.domain.StaffOfficeDomain;
import top.infopub.mgr.hr.vo.StaffOfficeVo;
import top.infopub.model.hr.StaffOffice;

import com.github.pagehelper.Page;


public interface StaffOfficeService extends GenericService<StaffOffice, String> {
    
    /**
     * 通过 在某个公司[某个部门=我的部门负责人]的岗位名称，获取对应 绑定有效期内 的人员信息  在职
     * @param  where
     * @return 
     * @see
     */
    List<StaffOfficeDomain> selectStaffByPostName(StaffOfficeDomain where);

    /**
     * 查询部门下有效期内的人员  按照 show_idx正序 
     * @param deptId
     * @return 
     * @see
     */
    List<StaffOfficeDomain> selectValidStaffByDept(String deptId);

    /**
     * 查询人员绑定有效期内的公司-部门信息   按照 show_idx正序 
     * @param staffId
     * @return 
     * @see
     */
    List<StaffOfficeDomain> selectStaffValidOrgDept(String staffId);

    /**
     * 根据条件查询人员
     * @param page
     * @param staffOfficeVo
     * @return 
     * @see
     */
    Page<StaffOfficeVo> selectPageByDomainWhere(Page<StaffOfficeVo> page,
                                                StaffOfficeVo staffOfficeVo);

    /**
     * 新增/编辑人员信息
     * @param staffOfficeVo 人员信息
     * @see
     */
    void saveStaffInfo(StaffOfficeVo staffOfficeVo);

    /**
     * 新增/编辑人员及就职信息
     * @param staffOfficeVo 就职信息
     * @see
     */
    void saveStaffOffice(StaffOfficeVo staffOfficeVo);

    /**
     * 根据公司id查询人员及就职信息
     * @param orgId 公司id
     * @return 
     * @see
     */
    List<StaffOfficeVo> selectByOrgId(String orgId);
    
    /**
     * 根据公司id查询人员的有效就职信息
     * @param orgId 公司Id
     * @return 
     * @see
     */
    List<StaffOfficeVo> selectActiveByOrgId(String orgId);
    
}